/**
 * 上海中赢金融信息服务有限公司
 * Copyright (c) 2015-2025, izene soft All Rights Reserved.
 */
package com.sys.midware.config.core;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.sys.midware.config.model.BNode;

/**
 * <b>ClassName：</b> Configuration <br/>
 * <b>Description：</b> 维护配置文件参数集合的对象 <br/>
 * <b>@author：</b> mobing <br/>
 * <b>@date：</b> 2015年10月15日 下午6:33:52 <br/>
 * <b>@version: </b>  <br/>
 */
public class Configuration {

    /**
     * 配置文件参数集合，key为参数名，value为参数值
     */
    protected Map<String, Object> configParams;
    /**
     * 配置文件参数集合，key为参数名，value为参数值
     */
    protected Map<String, String> configFiles;
    /**
     * 配置集群属性
     */
    private List<BNode> BNodeList;
    /**
     * 构造函数，实例化一个新的配置文件参数对象
     */
    public Configuration() {
        this.configParams = new HashMap<String, Object>();
    }

    /**
     * 构造函数，实例化一个新的配置文件参数对象
     * 
     * @param configs
     *            配置文件参数集合
     */
    public Configuration(Map<String, Object> configs) {
        this.configParams = configs;
    }

    /**
     * 获取配置参数集合
     * 
     * @return
     */
    public Map<String, Object> getParams() {
        return this.configParams;
    }

    /**
     * 添加配置参数
     * 
     * @param key
     *            参数名字
     * @param value
     *            参数值
     */
    public void addParam(String key, Object value) {
        this.configParams.put(key, value);
    }

    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public Object getParam(String key) {
        return this.configParams.get(key);
    }

    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public BNode getBNode(String nodeName) {
        Object obj = getParam(nodeName);
        if(obj!=null && obj instanceof BNode){
            return (BNode) obj;
        }
        return null;
    }
    /**
     * 依据配置参数名称，获取其配置参数值
     * 
     * @param key
     * @return 参数值对象；若不存在，则返回null
     */
    public String getBNodeParamString(String nodeName,String key) {
        BNode bnode= getBNode(nodeName);
        if(bnode!=null){
          Object obj=  bnode.getNodeParams().get(key);
          if(obj!=null){
              return String.valueOf(obj);
          }
        }
        return null;
    }
    /**
     * 依据配置参数名字，移除配置参数
     * 
     * @param key
     *            参数名
     */
    public void removeParam(String key) {
        this.configParams.remove(key);
    }

    public Map<String, String> getConfigFiles() {
        return configFiles;
    }

    public void setConfigFiles(Map<String, String> configFiles) {
        this.configFiles = configFiles;
    }

    public Map<String, Object> getConfigParams() {
        return configParams;
    }

    public void setConfigParams(Map<String, Object> configParams) {
        this.configParams = configParams;
    }

    public List<BNode> getBNodeList() {
        return BNodeList;
    }

    public void setBNodeList(List<BNode> bNodeList) {
        BNodeList = bNodeList;
    }


    
    
    
}
